package com.cskaoyan.javase._1identifier;

/**
 * 标识符
 * 问题3：需要标识符起名字的常见结构有哪些？
 * 主要有：
 * 类名（包括后面会学习的接口名、注解名等）
 * 方法名（main就是一个方法名）
 * 变量名
 * 包名
 *
 * 包的概念：
 *      你可以把Java中的包理解成操作系统中的文件夹，它的作用：
 *          1.组织起庞大的Java文件，用来分类
 *          2.包用来区分同名的Java文件，同包下禁止存在同名class
 *          3.Java中用包来区分访问权限（面向对象）
 *          4.如果代码直接写在src目录下，相当于没有包
 *
 * 标识符命名的语法规则：
 * 标识符的开头必须是：
 * 字母（A~Z 和 a~z）
 * 下划线（_）
 * 美元符号（$）
 * Unicode 字符集中编号为0xC0以及它后面的所有符号
 *
 * 标识符的组成必须是：
 * 数字（0~9）
 * 字母（A~Z 和 a~z）
 * 美元符号（$）
 * 下划线（_）
 * Unicode 字符集中编号为0xC0以及它后面的所有符号
 *
 * 标识符约定俗称的规范：
 * 驼峰命名法，主要就是用来针对多个英文单词组成的字符串的名字命名规则
 * 大驼峰： 首个单词的首字母大写，其余单词的首字母也大写，然后其余字母都小写
 *      比如，我的名字，我的java
 *      MyJava、MyName，com.cskaoyan.javase._0datatype.Demo，Test，Name
 * 小驼峰：首个单词的首字母小写，其余单词的首字母也大写，然后其余字母都小写
 *      myJava、myName、demo、test、name
 *
 * 接下来按照标识符类型的不同，讲命名规范：
 *      1.类名，遵循大驼峰式的命名规范
 *      2.方法名、变量名，遵循小驼峰式的命名规范
 *      3.包名，由于包名是存在多级的，所以它的命名在实际开发中，多会以反转公司的域名作为开头，并且字母全部小写
 *      百度：baidu.com ---> com.baidu
 *      王道: cskaoyan.com ---> com.cskaoyan
 *
 * 当然不止这么简单，还有以下注意事项：
 *      1.要尽量使用正确的英语单词，不要用拼音或者拼音英语混用，更不能用汉字。
 *      2.实际开发中，Java标识符的命名是很少使用下划线的，也几乎不使用$美元符号。更多的都是使用英语单词+数字的组合
 *      3.下划线和美元符号不能作为开头和结尾（严格禁止的）
 *      4.总体上来说，标识符起名字，最重要的原则是"见名知意"
 *          String name;
 *          int age;
 *          class Student{}
 *          class XxxTest{}
 *          实际开发中，严格禁止使用a，b，c，d等简陋的命名
 *          所以标识符起名字，不要害怕过长，重要的是表示清楚含义
 *
 * 约定：如果你写代码，作业里。命名不规范，第一次我会私聊你，第二次直接10元红包（线下2km锻炼身体）
 *
 * @since 14:40
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        // Non-ASCII characters in an identifier.
        int 长风;

        // int 1abc;

        // int abc#;

        // 喜欢你
        int 好きだ;

        int _;

        int a;

        // b表示一个名字
        String b;

    }
}
